____ _ _ _ _
| _ \ ___ | |_ (_) _ __ ___ __| | (_) __ _
| |_) | / _ \ | __| | | | '_ \ / _ \ / _| | | | / _ |
| _ < | __/ | |_ | | | |_) | | __/ | (_| | | | | (_| |
|_| \_\ \___| \__| |_| | .__/ \___| \__,_| |_| \__,_|
|_|
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―Β―
SETL
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
top
SETL (Set Language, engl. fΓΌr Mengensprache) ist eine hΓΆhere Programmiersprache die auf der Mengenlehre der Mathematik aufbaut. Sie wurde 1969/70 von Jack T. Schwartz am Courant Institute of Mathematical Sciences of New York University entwickelt.
Als fundamentale Datentypen kennt SETL Integer, Real, String, Boolean und den Nullwert Omega (om). Es gibt keine starke Typisierung, der Datentyp einer Variable wird je nach zugewiesenem Inhalt angepasst. Des Weiteren verfΓΌgt SETL ΓΌber automatische Speicherbereinigung.
SETL kennt zwei Datenstrukturen, das unsortierte set (engl. Menge) und das tuple (engl. Tupel) als geordnete Folge von Elementen. Ein set weist die Besonderheit auf, dass in ihm kein Wert doppelt vorkommt, bei einem tuple ist dies jedoch gestattet. Bis auf diese EinschrΓ€nkung ist der Inhalt von einem set oder einem tuple beliebig, sie kΓΆnnen auch weitere sets und tuples beinhalten. Ein Sonderfall ist die map (kurz fΓΌr mapping, engl. Abbildung). Sie ist eine Menge von geordneten Paaren und besteht aus tuples der LΓ€nge 2.
Des Weiteren stellt SETL do-while-Schleifen, if-then-else- und case-Anweisungen zur VerfΓΌgung. Auch gibt es spezialisierte Schleifen zum Durchlaufen von tuples und sets.
Von Hause aus kennt SETL zahlreiche Operatoren fΓΌr die Grundrechenarten, sowie trigonometrische und andere mathematische Aufgaben. Des Weiteren besitzt SETL spezielle Operatoren zum Arbeiten mit Mengen und Zeichenketten. AuΓerdem kann man eigene Operatoren festlegen.
Contents
β’ Implementierung
β’ Weblinks
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Implementierung
Aufgrund der jahrelangen Zusammenarbeit der New York University und Wissenschaftlern aus Nowosibirsk, wurde SETL nicht nur auf Rechnern der amerikanischen Firma Burrough, sondern auch auf russischen Rechnern vom Typ BESM-6 und ES EVM implementiert. Mittlerweile gibt es auch verschiedene Implementierungen fΓΌr alle gΓ€ngigen Betriebssysteme.
Beispielquelltext
Zwei Beispiele zum Ausgeben aller Primzahlen von 2 bis n. Besonders am zweiten Beispiel lΓ€sst sich erkennen, dass die Sprache auf der Mengenlehre aufbaut.
program primzahlen;
$ Dieses Programm gibt alle Primzahlen aus, die kleiner als der eingelesene Parameter sind
read(n); $lese Parameter ein
primesΒ := { }; $Menge der ausgegebenen Primzahlen
pΒ := 2; $erste Primzahl festlegen
$ Schleife um weitere Primzahlen zu ermitteln
loop while p < n do $ Wiederhole solange p kleiner als n ist
if notexists t in primes | p mod t = 0 then
print(p); $keine der bisherig ermittelten Primzahlen ist Teiler von p, also gib die Primzahl aus
primes withΒ := p; $FΓΌge sie zur Menge der ausgegebenen Primzahlen hinzu
end if;
pΒ := p + 1; $Zu testende Zahl um eins erhΓΆhen
end loop;
end program primzahlen;
program primzahlen2;
read(n);
print({p in {2..n} | forall t in {2..p - 1} | p mod t > 0});
$Gib die Menge aller Zahlen p aus der Menge 2 bis n aus, fΓΌr die gilt,
$dass p sich durch keine der Zahlen der Menge 2 bis p-1 glatt teilen lΓ€sst
end program primzahlen2;
Weblinks
β’ SETL gewidmeter Web-Auftritt
β’ Dokumentation der SETL Programmiersprache (engl.)
β’ SETL Compiler (engl.)